package com.java.basis.thread.pool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 * newCachedThreadPool
 * 创建一个定长线程池，可控制线程最大并发数，超出的线程会在队列中等待。
 * 可以看到本来创建了10个线程池，这里只用了7个，因为newCachedThreadPool创建一个可缓存线程池，
 * 如果线程池长度超过处理需要，可灵活回收空闲线程，若无可回收，则新建线程
 * @author wangning
 * @create 2021-04-25 21:09
 */
public class TestCachedThreadPool01 {
	public static void main(String[] args) {
		//创建线程池
		ExecutorService executorService = Executors.newCachedThreadPool();
		//执行任务
		//创建了10个线程
		for (int i = 0; i < 10; i++) {
			int temp = i;
			executorService.execute(new Runnable() {
				@Override
				public void run() {
					System.out.println("threadName;"+Thread.currentThread().getName()+",i"+temp);
					try {
						TimeUnit.SECONDS.sleep(1);
					} catch (InterruptedException e) {
					}

				}
			});
		}

	}
}
